package com.mh.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.mh.dto.vo.BillStatisticsOfBookVo;
import com.mh.dto.vo.R;
import com.mh.pojo.AccountBook;

import java.util.List;
import java.util.Map;

/**
 * 账本表(AccountBook)表服务接口
 *
 * @author zmh
 * @since 2025-02-08 09:18:48
 */
public interface AccountBookService extends IService<AccountBook> {

    /**
     * 分页查询
     *
     * @param page 查询页数
     * @param size 一页显示条数
     * @return ·
     */
    R<Page<AccountBook>> getAllByPage(int page, int size);

    /**
     * 获取用户所有账本
     * @param openId 用户openIdid
     * @return `
     */
    R<List<AccountBook>> getAll(String openId);

    /**
     * 根据ID删除账本
     * @param userId 用户ID
     * @param bookId 账本ID<e
     * @return ·
     */
    R<Boolean> deleteById(Integer userId, Integer bookId);

    /**
     * 将账本设置默认
     * @param bookId 账本ID
     * @return ·
     */
    R<Boolean> setDefault(Integer bookId);

    /**
     * 改账本名称
     * @param bookId 账本ID
     * @param bookName 账本名称
     * @return ·
     * */
    R<Boolean> updateBookName(Integer bookId, String bookName);

    /**
     * 新增账本
     * @param userId 用户ID
     * @param bookName 账本名称
     * @return ·
     */
    R<Boolean> addBook(Integer userId, String bookName);


    /**
     * 获取账本统计信息
     * @param bookIds 账本ID
     * @return ·
     */
    R<Map<Integer, BillStatisticsOfBookVo>> getBillStatisticsOfBook(List<Integer> bookIds);

    /**
     * 获取首页账本统计数据（根据月份和账本ID获取指定月份的收入，支出和结余）
     * @param month 年月
     * @param bookId 账本ID
     * @return `
     */
    R<BillStatisticsOfBookVo> getMonthDataOfAccountBook(String month, Integer bookId);
 }

